package com.dj.mingkong.portal.biz.service.music;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dj.mingkong.portal.biz.controller.music.vo.request.MusicianFansAddVo;
import com.dj.mingkong.portal.biz.controller.music.vo.request.MusicianFansCancelVo;
import com.dj.mingkong.portal.biz.controller.music.vo.request.MusicianFansQueryVo;
import com.dj.mingkong.portal.biz.controller.music.vo.request.MusicianFansUserQueryVo;
import com.dj.mingkong.portal.biz.controller.music.vo.response.MusicianFansDetailVo;
import com.dj.mingkong.portal.biz.controller.music.vo.response.MusicianFansUserVo;
import com.dj.mingkong.portal.biz.controller.music.vo.response.MusicianFansVo;

/**
 * 音乐人粉丝服务接口
 *
 * @author zenglonghui
 * @date: 2022/8/25 10:49
 */
public interface MusicianFansService {
    /**
     * 关注音乐人
     *
     * @param addVo {}
     */
    void follow(MusicianFansAddVo addVo);

    /**
     * 获取关注信息
     *
     * @param musicianId 音乐人ID
     * @return MusicianFansVo
     */
    MusicianFansDetailVo getMusicianFans(Long musicianId);

    /**
     * 添加音乐人粉丝
     *
     * @param addVo {}
     */
    void add(MusicianFansAddVo addVo);

    /**
     * 分页查询关注的音乐人列表
     *
     * @param queryVo {}
     * @return MusicianFansVo
     */
    Page<MusicianFansVo> pageByVo(MusicianFansQueryVo queryVo);

    /**
     * 取消关注
     *
     * @param cancelVo {}
     */
    void cancel(MusicianFansCancelVo cancelVo);

    /**
     * 获取粉丝用户列表
     *
     * @param queryVo {}
     * @return UserFansVo
     */
    Page<MusicianFansUserVo> pageUserByVo(MusicianFansUserQueryVo queryVo);
}
